package hredis

import (
	"time"

	"github.com/gogf/gf/v2/os/gcache"
	"github.com/gogf/gf/v2/os/gctx"
	"github.com/gogf/gf/v2/util/gconv"
)

// 缓存函数
// 参数1: key
// 参数2: val
// 参数3: 缓存时间/秒
func S(any ...interface{}) (result string) {

	var (
		err   error
		ctx   = gctx.New()
		cache = gcache.New()
		Len   = len(any)
		conn  = RedisDB
	)

	// 读取缓存
	if Len == 1 {
		result = conn.MustDo(ctx, "GET", any[0]).String()
	}

	// 设置缓存
	if Len == 3 {
		// 创建缓存适配器
		cache.SetAdapter(gcache.NewAdapterRedis(conn))

		// 写入 单位/秒
		err = cache.Set(ctx, any[0], any[1], time.Duration(gconv.Int(any[2]))*time.Second)
		if err != nil {
			result = err.Error()
			// panic(err)
		} else {
			result = gconv.String(any[1])
		}
	}

	return
}
